package com.icinfo.cloud.provider.punish.ucase.punishinform.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.icinfo.cloud.common.core.Validator.BaseGroup;
import com.icinfo.cloud.provider.punish.ucase.casemain.dto.AppendixDto;
import com.icinfo.cloud.provider.punish.ucase.caseregister.dto.CaseEmergencyReasonInfoDto;
import com.icinfo.cloud.provider.punish.ucase.caseregister.dto.PersonReasonIds;
import com.icinfo.cloud.provider.punish.ucase.punishinform.vo.InvestEndMultiple;
import com.icinfo.cloud.provider.punish.ucase.punishinform.vo.PunishRuleInfo;
import com.icinfo.cloud.provider.punish.ucase.punishinform.vo.ViolateRuleInfo;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
import java.util.List;

@Data
public class AppInformInvestigationEndFormDto {

    /**
     * 案发时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone = "GMT+8")
    private LocalDateTime caseProceedTime;

    /**
     *案件id
     */
    @NotBlank( message = "案件id不能为空")
    private String caseId;

    /**
     *案由
     */
    private String caseReason;
    /**
     *案由编码
     */
    private String caseReasonCode;

    /**
     * 案由编码id，关联违则罚则
     */
    private String caseReasonNodeid;

    /**
     * 违则(违则+违则详情)list
     */
    private List<ViolateRuleInfo> violateRuleInfos;
    /**
     * 罚则(罚则+罚则详情)list
     */
    private List<PunishRuleInfo> punishRuleInfos;


//    /**
//     *案件名称
//     */
//    private String caseName;

    /**
     * 违法情形
     */
    private String illegalSituation;
    /**
     * 处罚种类(多种以;分隔)
     */
    private String punishKinds;

    /**
     * 处罚内容
     */
    private String punishContent;

    /**
     * 没收违法财物
     */
    private String confiscateIllegalProperty;
    /**
     * 没收违法财物价值
     */
    private String confiscateIllegalPropertyValue;
    /**
     * 调查结论;1:予以处罚,2:不予处罚
     */
    private String investConclusion;
    /**
     * 不予处罚原因
     */
    private String notGivePunishReason;
    /**
     * 不予处罚详情描述
     */
    private String notGivePunishDetail;
    /**
     * 拟处罚金额
     */
    private String draftPunishMoney;
    /**
     * 处置方式；0：常规处罚  1：合并处罚 2：分别处罚
     */
    private String handleType;

    /**
     * 案件案由、当事人类型；1：单案由单当事人 2：多案由单当事人 3：单案由多当事人
     */
    private String  casePartiesReasonType;

    /**
     * 文书目录编码
     */
    private String docCatalogCode;

    /**
     * 没收违法所得
     */
    private String confiscateIllegalMoney;

    /**
     * 事项编码
     */
    private String itemVersionCode;
    /**
     * 领域编码
     */
    private String territoryCode;

    /**
     * 认领id
     */
    private String claimId;

    /**
     * 是否重大案件；1 是 ，0 否
     */
    private String isImportantCase;
    /**
     * 是否集体议案；1 是 ，0 否
     */
    private String isNeedCollectiveDiscuss;





// 以下没用到


    /**
     * 调查终结信息list
     */
    private List<InvestEndMultiple> investEndMultipleList;

    /**
     * 裁量区间
     */
    private String discretionInterval;

    /**
     * 违法级别（1-轻微，2-一般，3-较重，4-严重，5-非常严重）
     */
    private String illegalLevel;

    /**
     * 上传文件对象list
     **/
    private List<AppendixDto> appendixList;

    /**
     * 处理结论；0 行政处罚,1 涉刑移送  2 行政处理
     */
    private String handleConclusion;

    /**
     * 处理内容
     */
    @Length(max = 3000,message = "长度不能超过3000",groups = {BaseGroup.Query.class})
    private String disposeContext;

    /**
     * 人设案由的ids（主键id集合）父级主键和子集主键为一个数据组，
     */
    private List<PersonReasonIds> personReasonIds;

    /**
     * 人设案由的名称（名称name集合）
     */
    private List<String> personReasonNames;

    /**
     * 应急案由列表
     */
    private List<CaseEmergencyReasonInfoDto> caseEmergencyReasonList;
    /**
     * 案件调查日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone = "GMT+8")
    private LocalDateTime caseInvestigateTime;

    /**
     * 结论；1:继续办案 2:案件终止 3:案件撤销
     */
    private String discussConclusion;
}

